Staff Portal
User Guide
Getting Started
Everything you need to know to log in and navigate the portal for the first time.
What Is the Staff Portal?
The Mint Vision Optique Staff Portal is a web-based practice management system built exclusively for Mint Vision staff. It replaces several disconnected tools your team used previously:
| Old Tool | Replaced By |
|---|---|
| Paper patient cards & intake sheets | Digital Forms + Customer profiles |
| Google Sheets order tracking | Orders — Fulfillment Board (Kanban) |
| Excel inventory spreadsheet | Inventory browser + Purchase Orders |
| Printed work orders | Digital Work Order (printable from portal) |
| Manual invoices | Invoices (auto-generated, PDF-ready) |
Accessing the Portal
Open Google Chrome (required — other browsers are not supported for all features) and navigate to the portal URL provided by your manager. The portal is accessible from any device with an internet connection — desktop, laptop, or tablet.
Logging In
On the login screen, enter your email address and password provided by your manager. Click Sign In.
- Your session stays active for 7 days. You will be automatically logged out after 7 days of inactivity.
- If you forget your password, contact your manager — they can reset it from the Settings page.
- There is no self-service password reset link available to patients (patients do not have accounts).
The Sidebar — Main Navigation
After logging in, you will see a dark left panel — this is the sidebar. It is present on every page and is your primary way of navigating the portal.
Navigation Items Explained
- Dashboard — Home screen. Revenue snapshot, alerts, and recent activity.
- Customers — Full patient/customer database. Search, view, create, and edit records. Google Review tracking per customer.
- Exams — Weekly exam tracking with payment method breakdown.
- Forms — Digital patient forms. Send, track, and review intake documents.
- Fulfillment Board — Kanban view of all active orders. Your daily workflow hub.
- All Orders — Full historical order list (including completed and cancelled).
- Invoices — All issued customer invoices.
- All Frames — Inventory browser for all frame stock.
- Vendors — Supplier contact management.
- Purchase Orders — Track orders placed with vendors.
- Analytics — Inventory health reports (dead stock, ABC analysis, etc.).
- Settings — Your account details and notification preferences.
Notifications Bell
In the top-right corner of every page, you will see a bell icon. When you have unread notifications, a red dot with a count appears. Click the bell to open a dropdown showing your recent notifications. The bell refreshes automatically every 30 seconds — you do not need to reload the page.
Signing Out
Click the Sign Out button at the very bottom of the sidebar. Always sign out when leaving a shared computer or at the end of your shift.
Dashboard
The dashboard is your daily command center — it shows key performance metrics, urgent alerts, and recent activity at a glance.
2.1 Scoreboard (Click to Cycle)
At the very top of the dashboard, a grey scoreboard card shows three large numbers. Click anywhere on the card (or click the dot indicators) to cycle through three views:
| View | What It Shows |
|---|---|
| This Month | Revenue, avg ticket, and orders for the current calendar month. Goal bar shows monthly target. |
| Year to Date | Same metrics for the current calendar year. Goal bar shows yearly target (monthly goal × 12). |
| All Time | Lifetime totals across all orders. No goal bar. |
Below the numbers (for Monthly and Yearly views), a goal progress bar shows how close you are to hitting the target. The bar fills with green as revenue grows.
2.2 Money on the Table
This section only appears when there are open opportunities — things your team should follow up on today. Think of it as an automatic to-do list generated from your data.
Deposit Taken — Not Picked Up
Any order where a deposit was collected but the patient has not yet come in to pick up their glasses. These orders are marked READY and should be followed up on. Click any row to open the order directly.
Exams Without Purchase
Patients who had an exam but did not purchase frames or lenses. Grouped into three time buckets:
- 0–30 days — Freshest leads. A friendly follow-up call may be enough.
- 31–60 days — Getting colder. Consider a promotion or personal outreach.
- 61–90 days — Approaching 3 months. Last chance before they go elsewhere.
Due for Recall
Patients whose last exam was 1 to 2 years ago — they are due for their annual or biennial checkup. This list drives your recall outreach campaign.
Contact Lens Drop-offs
Contact lens patients who have had no contact lens order in 90+ days. These patients may be purchasing CL supplies elsewhere and represent a revenue recovery opportunity.
2.3 Conversion Metrics
Two critical ratios appear as large cards with color-coded status:
| Metric | Target | Red Alert If... |
|---|---|---|
| Exam → Purchase Rate | ≥ 70% | Falls below 70% |
| Avg Frames per Transaction | ≥ 1.3 | Falls below 1.3 |
When a metric is red, it means the store is underperforming in that area this month. Review with your manager and discuss what's driving the gap.
2.4 Owner / Manager View (Admin Role Only)
Staff with the Admin role see an additional section below the conversion metrics with deeper business intelligence:
Revenue Growth
- Month-over-Month (MoM): This month vs. last month, with a trend arrow (↑ or ↓)
- Year-over-Year (YoY): This month vs. same month last year
Revenue by Category (YTD)
A horizontal bar chart showing year-to-date revenue split across five categories:
- Glasses
- Contacts
- Sunglasses
- Accessories
- Exam Only
Fulfillment Speed
Average number of days from order creation to patient pickup. A lower number means faster turnaround and better patient experience. The benchmark is typically 10–14 days for lab orders.
2.5 Recent Orders Strip
At the bottom of the dashboard is a row of the 6 most recently created orders. Each card shows the customer name, order number, status badge, and the order total. Click any card to jump directly to that order's detail page.
Customers
The Customers section is your full patient database — every person who has ever visited, called, or been sent a form by Mint Vision.
3.1 Customer List
Search
The search bar at the top accepts name, email address, or phone number. Results update as you type. Phone search works with partial numbers (e.g., searching "6476" will show any customer whose phone contains those digits).
Lifecycle Tabs
Seven filter tabs appear below the search bar to quickly segment your customer base:
Table Columns
| Column | Description |
|---|---|
| Name | Full name. Shown in red if the customer has an outstanding balance. |
| Phone | Primary phone number. Click to call (on mobile). |
| Lifecycle | Colored badge indicating the customer's engagement status. |
| LTV | Lifetime Value — total revenue collected from this customer, all-time. |
| Last Purchase | Date of their most recent completed order. |
| # Orders | Total number of orders (all statuses) associated with this customer. |
The list shows 25 customers per page. Use the pagination controls at the bottom to navigate between pages.
3.2 Lifecycle Definitions
Understanding lifecycle stages helps you prioritize outreach and identify revenue opportunities. These are calculated automatically based on purchase history.
3.3 Customer Detail Page
Clicking on any customer's name opens their full profile. This is the single source of truth for everything about a patient.
Alert Banners (Top of Page)
Up to four alert banners may appear at the top of the customer detail page:
- Exam Only This patient has had exams but no frame/lens purchases — conversion opportunity. Recommend second-pair or sunglasses.
- Under 21 Patients under 21 have growing eyes — their PD measurement may be outdated. Verify before ordering.
- Outstanding Balance The patient owes money. The amount is shown. Collect before releasing new orders.
- Insurance Eligible Soon Their insurance benefits renew within the next 30 days — great time to schedule an appointment.
Left Column — Contact & Insurance
Contact Card
- Phone, email, date of birth (age calculated automatically)
- City / Province
- Family group (linked family members share records)
- Occupation
- Referral source (how they heard about Mint Vision)
Insurance Card
- Insurance provider name
- Policy / Member number
- Last claim date
- Next eligible date (when benefits reset)
Store Credits Card
Shows any store credit balance available for this customer. Staff with appropriate permissions can add credits and set expiry dates.
Notes
A yellow sticky-note style area for free-form staff notes. Visible to all staff. Example uses: "prefers to be called Bob", "allergic to nickel frames", "always asks for Dr. Sharma".
Tags
Colorful pill-shaped labels for quick categorization (e.g., VIP, Contact Lens Patient, Referred: Dr. Chen). Click to add or remove tags.
Right Column — Clinical & Transaction History
Lifecycle & Journey
A summary card showing: Lifetime Value, Average Order Value, Completed Orders count, Total Orders count, first purchase date, and most recent purchase date.
Prescriptions
Shows all prescriptions on file, separated into two categories:
- Our Rx Prescriptions recorded directly in the portal (from an in-store exam).
- External Rx Prescriptions brought in from an outside doctor.
Each prescription row shows: OD and OS values for Sphere (Sph), Cylinder (Cyl), Axis, Add (for bifocals/progressives), and PD (pupillary distance).
Add External Prescription
An expandable section with two options:
- Manual entry — type in the Rx values field by field.
- AI OCR — upload a photo of the Rx slip. The system reads the values automatically using AI and pre-fills the form for you to verify.
Medical History
An inline-editable form for health conditions relevant to vision care (e.g., diabetes, glaucoma, dry eye, medication list). Click any field to edit directly — no separate "edit mode" required.
Orders
All orders associated with this customer, listed in reverse chronological order. Each row shows the order number (clickable), status badge, date, and total.
Forms & Documents
All digital forms sent to or completed by this patient. Status badges:
3.4 Creating a New Customer
Click the "New Customer" button in the top-right corner of the Customers list page.
Required fields are marked with an asterisk. Fill in at minimum:
- First Name and Last Name
- Phone number (digits only — no spaces, dashes, or brackets)
Optional but recommended fields: email address, date of birth, city/province, insurance details, referral source, initial notes, and tags.
3.5 Editing a Customer
On any customer's detail page, click the "Edit" button to open the same form, pre-filled with current values. Make your changes and click "Save Changes".
6476485809 — not (647) 648-5809. The portal formats the display automatically.
3.5 Scan Rx — Digitise a Physical Prescription
Scan Rx is a dedicated workflow for digitising paper prescriptions that patients bring in from an outside doctor. It combines patient lookup, quick patient creation, and AI-powered OCR into a single focused page — without needing to navigate to a customer profile first.
Access it from the sidebar: Customers → Scan Rx.
Step 1 — Find or create the patient
- Type the patient's name, phone number, or email in the search box. Results appear as you type (debounced).
- Click a result to select the patient and move to Step 2.
- If the patient is new, click "New patient — quick create" to open a mini form. Enter first name, last name, and optionally phone and email. Click "Create Patient & Continue" — the patient record is created instantly and you move to Step 2.
Step 2 — Scan the Rx
- The selected patient's name is shown at the top. Click "Change" to go back and select a different patient.
- Tap the upload area (or camera icon on mobile) to take a photo of the prescription using the device camera, or choose an existing image from the camera roll.
- Once an image is selected, click "Transcribe with AI". The system sends the image to Claude AI which reads the prescription values and pre-fills OD, OS, and PD fields.
- Review and correct any values, then fill in doctor name, licence number, and Rx date.
- Click "Confirm & Save Prescription". The original scan image is uploaded to secure cloud storage and the prescription is saved to the patient's record.
Step 3 — Done
A confirmation screen appears. You can:
- "Scan another" — reset the flow to digitise the next patient's Rx.
- "View patient" — navigate to the patient's full profile.
Viewing saved scans
On the customer detail page, under the External Prescriptions section, each row with a stored scan shows a "View scan" link that opens the original image in a new tab.
- Photograph the Rx flat in good light — avoid shadows across the text.
- Always verify AI-extracted values against the paper Rx before saving. AI can misread faded or handwritten text.
- The original scan image is stored permanently regardless of OCR accuracy — it serves as the definitive record.
3.6 Current Glasses Reading (Lensometer)
Record the prescription of the lenses a patient is currently wearing. This is useful for comparing against a new Rx after an exam — it's distinct from "External Prescriptions" (which are paper Rx scripts from other providers) and "Our Prescriptions" (which are Rx written at your clinic).
Where to Find It
On the Customer Detail Page, scroll to the Prescriptions card. Above "Our Prescriptions", you'll see a teal-badged section labelled "Current Glasses Reading" with the subtitle "What they're wearing".
Recording a Reading
- Click "Record New Reading" to expand the form.
- Enter the date (defaults to today).
- Fill in the OD (right eye) and OS (left eye) values: Sphere, Cylinder, Axis, Add.
- Enter PD (binocular) if available.
- Optionally snap a lensometer photo using the camera button — this uploads and stores the image alongside the reading.
- Add any notes (e.g., "Scratched lenses, patient reports headaches").
- Click "Save Reading".
How It Behaves
- Only one active Current Glasses reading per patient. Recording a new one automatically deactivates the previous.
- The reading does not appear under "Our Prescriptions" or "External Prescriptions" — it has its own dedicated section.
- If a lensometer photo was uploaded, a "View Photo" link appears next to the reading.
- Take the lensometer reading before the eye exam so you have a baseline for comparison.
- The photo feature works best with a phone or tablet — tap the camera button and photograph the lensometer display directly.
Orders
Orders are the core transaction record — from the moment a patient commits to buying, through lab ordering and pickup. This section covers every stage of the order lifecycle.
4.1 Order Status Flow
Every order moves through a defined sequence of statuses. Understanding these stages is essential for day-to-day operations.
Orders can be CANCELLED from any active stage.
| Status | Color | What It Means | Who Advances It |
|---|---|---|---|
| DRAFT | Gray | Order created but not yet finalized. No deposit required. | Staff (auto on save) |
| CONFIRMED | Blue | Order confirmed with patient. Deposit collected. Ready to send to lab. | Staff → "Confirm Order" |
| LAB ORDERED | Orange | Work order sent to the lab. Lenses in production. | Staff → "Send to Lab" |
| LAB RECEIVED | Yellow | Lenses/order received back from lab. Needs Rx verification. | Staff → "Mark Lab Received" |
| VERIFIED | Indigo | Rx and frame have been verified against the prescription. Ready to notify patient. | Optician → "Verify Rx" |
| READY | Green | Patient notified. Order ready for pickup at the store. | Staff → "Mark Ready" |
| PICKED UP | Gray | Patient has picked up their order. Dispensed and complete. | Staff → "Mark Picked Up" |
| CANCELLED | Red | Order cancelled. Refund process initiated separately. | Staff → "Cancel Order" |
4.2 Fulfillment Board (Kanban)
The Fulfillment Board is the default view when you click "Orders" in the sidebar. It gives a visual overview of all active orders organized by status in a Kanban (column) layout — exactly like a whiteboard with sticky notes.
Reading the Board
- Each column represents one order status.
- Each card represents one order. Cards show: customer name, order number, frame brand & model, due date, and balance remaining.
- Cards with a red due date are overdue.
- Completed statuses (Picked Up, Cancelled) are not shown on the board — they are only visible in the All Orders list.
Drag and Drop
You can drag an order card from one column to the next to advance its status. For example, drag from CONFIRMED to LAB ORDERED when you've submitted the work order to the lab.
Switching to List View
Click the "List View" button (top-right of the board) to switch from the Kanban layout to a searchable table of all orders. Click "Board View" to return.
Creating a New Order from the Board
Click the "New Order" button (top-right) to launch the 7-step order creation wizard.
4.3 All Orders (List View)
The All Orders link in the sidebar sidebar (under Orders) takes you to a searchable, filterable table of every order ever created — including completed and cancelled ones.
| Column | Description |
|---|---|
| Order # | Unique order identifier. Click to open the order detail page. |
| Customer | Patient name. Click to open the customer detail page. |
| Type | Order type: Glasses, Contacts, Sunglasses, Accessories, or Exam Only. |
| Status | Current status badge. |
| Total | Customer-facing order total. |
| Created | Date the order was first created. |
4.4 Creating a New Order — 7-Step Wizard
Clicking "New Order" launches a guided wizard. Work through each step in sequence. You can navigate back to previous steps to correct information before confirming.
4.5 Order Detail Page
Clicking any order number opens the full order detail. This is where you manage the order throughout its lifecycle.
Header Bar
- Order number (e.g., #1042) and status badge
- Created date and assigned staff member
- Invoice button — top right. A green ✓ checkmark appears next to it if an invoice has already been issued.
- Work Order button — opens the print-ready work order for the lab.
Status Advance Button
A prominently placed action button at the top of the page advances the order to the next status. The button label changes depending on current status:
| Current Status | Button Label |
|---|---|
| CONFIRMED | Send to Lab |
| LAB ORDERED | Mark Lab Received |
| LAB RECEIVED | Verify Rx |
| VERIFIED | Mark Ready for Pickup |
| READY | Mark Picked Up |
Left Column
- Customer — linked to customer detail page
- Frame & Lens details — brand, model, colour, lens type, coatings
- Insurance — plan and claim reference if applicable
- Internal Notes — visible only to staff (not on invoice or work order)
- Lab Notes — notes printed on the work order sent to the lab
Right Column
- Items table — all line items with quantity, unit price, and line total. Shows total at bottom.
- Deposit Paid — amount collected at time of order
- Balance Due — total minus deposit (what patient owes at pickup)
- Payments history — every payment recorded on this order, with date and method
- Status History — a timeline of every status change with timestamp and staff name
4.6 Pickup Complete Modal
When you click "Mark Picked Up", a modal dialog appears before the status changes. This ensures you capture important follow-up actions at the point of dispensing:
- Send review request — SMS the patient a link to leave a Google review. Auto-recommended for orders over $500.
- Add to referral campaign — immediately enrolls the patient in the active Post Purchase Referral campaign (first message sent in 3 days).
- Send family promo offer — appears only if the patient has linked family members; immediately enrolls each family member in the active Family Add-on campaign (starts in 7 days).
- Mark as low-value — opts this patient out of all future marketing campaigns.
- Print invoice Recommended — opens the invoice in a new browser tab and prints automatically after a brief delay. Checked by default.
Click "Confirm Pickup" to finalize. The order moves to PICKED UP status.
4.6.1 Invoice Auto-Print at Pickup
The Print invoice checkbox in the Pickup Complete modal (checked by default) triggers automatic printing when you confirm pickup:
- Click "Mark Picked Up" on a READY order
- Confirm or adjust the engagement options in the modal
- Leave Print invoice checked (it is by default)
- Click "Confirm Pickup"
- The invoice page opens in a new browser tab and the print dialog appears automatically after ~600 ms
4.7 Work Order
When you click "Send to Lab" on any non-exam order, the portal automatically opens the work order in a new tab and triggers the print dialog. No extra steps needed — just confirm the print when the dialog appears.
You can also open the work order manually at any time by clicking the "Work Order" button on the order detail page.
The work order includes:
- Centered "MINTVISION" header with date and order number
- Patient name, phone, and email in bordered boxes
- Prescription grid: OD and OS × Sphere / Cylinder / Axis / Add / PD
- Frame details: brand, model, colour, and measurements
- Lens specifications: type, index, coatings
- Lab notes (from the Internal Notes field)
Use Chrome's built-in print function (Cmd+P on Mac, Ctrl+P on Windows) to print or save as PDF.
4.8 Queue Another Order Before Saving
On busy days when a patient is ordering both glasses and contacts, you can queue a second order before the first one is even saved — without clicking through the success overlay.
How to Use
- Fill out the order wizard as normal through step 6 (Prescription)
- On Step 7 — Review, find the Invoice Actions card
- Check "Add another order for {Patient First Name} after saving"
- Click "Create Order"
- The order is saved, and the wizard immediately resets to step 1 with the same patient already selected
- Fill in the next order and repeat
Invoices
The portal generates professional customer invoices that can be printed or emailed. The dual-invoice system lets you maintain separate customer-facing and internal pricing.
5.1 Invoices List
Navigate to Invoices in the sidebar (under Orders). This page lists all invoices that have been formally issued.
| Column | Description |
|---|---|
| Date Issued | When the invoice was formally issued (not the order date). |
| Order # | Linked to the order that generated this invoice. |
| Customer | Patient name. |
| Total | Customer-facing invoice total. |
| Balance | Remaining balance (total minus deposits paid). Red if still owing. |
| View / Print | Opens the customer-facing invoice for print or PDF. |
| Internal amber | Opens the internal version showing real (cost) amounts. Only visible to authorized staff. |
5.2 Invoice View & Print
The invoice view is a clean, professional document formatted for customer presentation. It includes:
- Mint Vision Optique header with address and contact info (black & white layout)
- Invoice number and date issued
- Patient name and address
- Line items: description and price per line
- Subtotal (sum of line items), then deductions: Insurance Coverage, Referral/Promo, Deposit — all rows always visible (even if $0.00)
- Total (subtotal minus all deductions) — in bold
- Payment terms and any invoice notes
Issuing an Invoice
From the Order Detail page, click the "Invoice" button. On the invoice view, click "Issue Invoice" to formally record the invoice in the database. A green ✓ will appear on the order detail page confirming it has been issued.
If you need to re-generate the invoice (e.g., after a price correction), click "Re-Issue Invoice". This creates an updated invoice record.
Download PDF
Click the "Download PDF" button in the action bar to download a server-generated PDF of the invoice. The PDF matches the on-screen layout (black & white, no prescription table). Both customer and internal invoice modes are supported.
5.3 The Dual Invoice System
When an order uses dual-invoice pricing (two price columns: Customer Price and Real Price), two versions of the invoice exist:
| Version | Prices Shown | Who Sees It |
|---|---|---|
| Customer Invoice | Customer-facing prices (what the patient pays) | Patient, insurance claim |
| Internal Invoice Internal | Real/cost prices (actual amounts) | Manager, bookkeeper only |
Forms
The Forms system replaces paper intake sheets with digital forms patients can fill out on their phone before their appointment — or on a tablet in-store.
6.1 Forms Hub
Click Forms in the sidebar to open the Forms Hub. You'll see three tabs: Pending / Completed / Intake Packages.
The Four Form Templates
| Template | Purpose |
|---|---|
| New Patient Registration | Collects all patient demographics, contact info, and medical history. |
| Privacy & Consent (HIPAA) | Privacy policy acknowledgment and consent for treatment/data sharing. |
| Insurance Verification | Patient's insurance details for billing purposes. |
| Frame Repair Waiver | Liability waiver for frame adjustment or repair services. |
6.2 Sending a Form to a Patient
To send an individual form:
- From the Forms Hub, select a template (e.g., "New Patient Registration").
- Search for and select the customer to associate with the form.
- Click "Generate Link". A unique, one-time URL is created.
- Copy the link and send it to the patient via text message, email, or display it as a QR code.
- The form status appears as Pending in the Forms Hub.
- When the patient submits, status updates to Completed and you receive a notification.
6.3 Intake Packages (New Patient Onboarding)
An Intake Package bundles all three essential new patient forms into a single link:
- New Patient Registration
- Privacy & Consent (HIPAA)
- Insurance Verification
The patient completes all three in sequence — when they finish one, they are automatically redirected to the next. After all three are done:
- A customer record is automatically created (or updated) in the database using the information from the New Patient form.
- The customer's isOnboarded flag is set, marking them as fully registered.
- You receive an INTAKE_COMPLETED notification.
6.4 In-Person Kiosk Mode
For patients without smartphones or who prefer to fill out forms in-store, open the form link on a store tablet. The form is designed for touch interaction:
- Large, tap-friendly input fields
- A canvas signature pad for patients to sign directly on the screen using their finger or a stylus
- No staff login required on the kiosk device
6.5 Reviewing Completed Forms
When a patient submits their intake forms, you will receive a notification. To review the submission:
- Go to Forms → Completed tab (or Intake Packages tab).
- Click on the completed intake package.
- The review page shows all submitted information: demographics, medical history, insurance details, and the patient's signature.
- Click "Apply to PMS" to pull the patient's submitted data into their customer record in the portal.
6.6 Public Form Page
The public form URL (format: /f/[unique-token]) is the page patients see when they open the link. It:
- Requires no login
- Displays the form template with all input fields
- Includes a canvas signature area at the bottom
- Shows a branded "Thank You" success page after submission
Links expire after the form is submitted — a patient cannot submit the same link twice.
6.7 Smart Intake Link (Self-Service Onboarding)
The Smart Intake Link is a universal URL (/intake/start) that you can share with any patient — via SMS after booking, on your website, or as a QR code in-store. Unlike the staff-created intake package, this link is always the same and requires no staff action to set up.
How It Works
- Patient opens the link and sees two options: "I'm a New Patient" and "I'm a Returning Patient".
- New Patient: A fresh intake package (Registration + Privacy + Insurance) is created and the patient is redirected to fill it out.
- Returning Patient: The patient enters their phone number. If found, their existing data (name, contact, address, insurance) is pre-filled into the forms so they only need to verify and update. If the phone isn't found, they can try their email. If neither matches, they're redirected to the new patient flow.
What Gets Pre-Filled
- First and last name
- Phone, email, date of birth, gender
- Address, city, province, postal code
- Insurance provider, policy number, group number, member ID, coverage type
Sensitive data (medical history, prescriptions, health card) is never exposed through the lookup.
- Print a QR code pointing to your
/intake/startURL and display it at reception — patients can start paperwork on their own phone while waiting. - The lookup is rate-limited and timing-safe to prevent anyone from guessing patient information.
- When a returning patient submits, their existing record is updated (not duplicated) with any changes they made.
On the Staff Side
Self-service packages appear in the Forms Hub just like staff-created ones. The "Sent by" column shows "Self-service" instead of a staff name. Review and Apply workflows work identically.
Inventory
The Inventory section lets you track every frame in stock, manage vendors, create purchase orders, and analyze inventory health — all in one place.
7.1 All Frames Browser
Click All Frames in the sidebar to open the inventory browser. A stats bar across the top shows a live snapshot:
Filters
Use the filter panel to narrow down the frame list:
| Filter | Options |
|---|---|
| Search | Brand name, model name, SKU, or colour code |
| Type | Optical / Sun / Reading / Safety / Sport |
| Gender | Men's / Women's / Unisex / Kids |
| Stock Status | In Stock / Low Stock / Out of Stock / On Order |
| Age | <3 months (green) / 3–6 months (yellow) / 6–12 months (orange) / 12 months+ (red) |
| Vendor | Filter by supplier/vendor name |
Table Columns
| Column | Description |
|---|---|
| Thumbnail | Frame photo (if uploaded) |
| Brand · Model | With an aging dot (green/yellow/orange/red) indicating time in stock |
| SKU | Unique stock-keeping unit identifier |
| Category | Frame type and gender |
| Vendor | Supplier name |
| Retail Price | Customer-facing selling price |
| On Hand | Physical stock currently in store |
| On Order | Units expected from open purchase orders |
| Available | On Hand minus any committed/reserved quantity |
7.2 Frame Detail Page
Click any frame row to open its full detail page.
Frame Information
- Brand, Model, Colour, UPC (barcode), SKU
- Category (Optical/Sun/etc.), Gender, Style Tags
- Vendor (linked to vendor record)
Pricing
- Retail Price — what you charge patients
- Wholesale Cost — what you paid the vendor per unit
- Landed Cost — wholesale cost plus any shipping/duties
Stock
- Quantity On Hand — physical count
- Committed Qty — units reserved for open orders
- On Order Qty — units expected from open POs
- Reorder Point — stock level that triggers a low-stock alert
Inventory Ledger
A full history of all stock movements for this frame: initial stock entry, adjustments, sales (debits), and receipts from purchase orders (credits). Each entry shows the date, movement type, quantity change, and resulting balance.
7.3 Adding a New Frame to Inventory
Click "New Item" on the All Frames page. Fill in the frame details form:
- Required: Brand, Model, SKU, Category, Gender
- Recommended: Colour, UPC, Vendor (select from vendor list), Retail Price, Wholesale Cost, Landed Cost, Reorder Point
- Initial Stock Qty: Enter the number of units you are adding. This creates the first ledger entry.
BRAND-MODEL-COLOR (e.g., RAY-RB3025-GOLD). This makes searching and reporting much easier.
7.4 Vendors
Navigate to Vendors in the sidebar (under Inventory). This is your supplier contact book.
Vendor List
Shows all suppliers with their contact information and the number of inventory items sourced from each.
Creating / Editing a Vendor
Click "New Vendor" (or "Edit" on an existing vendor). Fields:
- Company Name
- Contact Person name
- Email address
- Phone number
- Notes (payment terms, ordering instructions, rep name, etc.)
7.5 Purchase Orders
Click Purchase Orders in the sidebar to manage all orders placed with vendors.
Purchase Order Status Flow
PO List Tabs
- All — every purchase order ever created
- Open — Draft, Sent, Confirmed, or Partial (not yet fully received)
- Received — fully received POs
- Cancelled — cancelled POs
Creating a Purchase Order
- Click "New PO".
- Select the Vendor from the dropdown.
- Set the expected delivery date.
- Add line items: search for inventory frames, enter the quantity ordered and the unit cost negotiated with the vendor.
- Click "Save as Draft" to save without sending, or "Send to Vendor" to mark it as Sent.
Receiving a Purchase Order
When inventory arrives from a vendor:
- Open the PO and click "Receive Items".
- For each line item, enter the quantity actually received (may differ from what was ordered).
- Click "Confirm Receipt".
- The system automatically updates stock quantities in inventory and creates ledger entries for each item received.
- If all items are received → status becomes Received. If only some → status becomes Partial.
7.6 Inventory Analytics
Click Analytics in the sidebar. This page gives you a health report on your entire inventory.
Summary Stats
Dead Stock & Aging Report
Frames that have had no sales in 6 or more months. Sorted by days idle (longest first).
| Column | Description |
|---|---|
| Frame | Brand and model |
| Vendor | Supplier |
| Stock Qty | Units still on hand |
| Days Idle | Days since last sale or receipt |
| Value at Cost | How much cash is tied up in this stock |
| Recommended Action | System-suggested action based on age |
Recommended actions by age:
- Monitor — 6–9 months idle
- 10% off — 9–12 months idle
- 25% off — 12–18 months idle
- 40% off — 18–24 months idle
- Discontinue — 24+ months idle
Best Sellers (Top 10)
The 10 frames with the highest unit sales over the selected period. Shows frame name, units sold, and total revenue generated.
Worst Sellers
Frames with zero sales that have been in stock for 90+ days. Shows days in stock, value at cost, and a recommended action.
ABC Analysis
ABC analysis categorizes each frame by its contribution to total revenue:
| Category | Revenue Contribution | Strategy |
|---|---|---|
| A | Top 80% of revenue | Prioritize. Keep well-stocked. Never let these go out of stock. Feature on display. |
| B | Next 15% of revenue | Monitor. Maintain adequate stock. Review quarterly. |
| C | Bottom 5% of revenue | Consider reducing. May be candidates for discontinuation or clearance. |
The system shows both the computed ABC category (based on actual sales) and the currently assigned category on each frame record. If they differ, consider updating the frame's category to reflect current performance.
Notifications
The notification system keeps you informed of important events as they happen — without needing to refresh or check multiple screens.
8.1 The Notification Bell
The bell icon appears in the top-right corner of every page in the portal. When you have unread notifications:
- A red dot with a count badge appears over the bell.
- Clicking the bell opens a dropdown popover showing your most recent notifications (up to ~20).
- The bell automatically refreshes every 30 seconds — no page reload needed.
- Clicking a notification in the list marks it as read and may navigate you to the relevant page.
8.2 Notification Types
| Type | When It Fires | Who It's Useful For |
|---|---|---|
| FORM_COMPLETED | A patient submits any individual form | Front desk staff monitoring patient submissions |
| INTAKE_COMPLETED | A patient completes all 3 forms in an intake package | Front desk — triggers "Apply to PMS" review workflow |
| ORDER_READY | An order is advanced to "Ready for Pickup" | Front desk — patient can be called to pick up |
| ORDER_CANCELLED | Any order is cancelled | All staff — for awareness and follow-up |
| ORDER_LAB_RECEIVED | An order is advanced to "Lab Received" | Optician — triggers Rx verification step |
| PO_RECEIVED | A purchase order is fully received | Manager / inventory staff — frames arrived |
| LOW_STOCK | An inventory item's stock falls to or below its reorder point | Manager — triggers a reorder |
8.3 Configuring Your Notifications
Each staff member can control which notification types they receive. Go to Settings → Notification Preferences.
Each notification type has an on/off toggle. Turning a type off means you will stop receiving that type of notification entirely.
- Front Desk: Enable FORM_COMPLETED, INTAKE_COMPLETED, ORDER_READY
- Optician: Enable ORDER_LAB_RECEIVED, ORDER_READY
- Manager: Enable all types
- Inventory: Enable PO_RECEIVED, LOW_STOCK
Settings
The Settings page lets you manage your personal account and notification preferences. Some system-level settings are visible here but are read-only for non-admin staff.
9.1 Account
Displays your current account details:
- Display Name — how your name appears throughout the portal
- Email Address — your login email
- Role — either Staff or Admin
To change your name or email, contact your manager. These fields cannot be self-edited.
9.2 Change Password
To update your password:
- Enter your current password in the first field.
- Enter your new password in the second field.
- Re-enter the new password in the confirmation field.
- Click "Update Password".
9.3 System Settings (Read-Only)
This card displays store-wide configuration values. These are set by the system administrator and cannot be changed from this page:
- Business Name — appears on invoices and work orders
- Tax Rate — applied to invoices
- Invoice Notes — default notes printed on all customer invoices (e.g., "Thank you for choosing Mint Vision!")
9.4 Display Preferences
Choose the text size that is most comfortable for you. Three options are available:
- Small — Compact text (~14 px base), ideal for fitting more data on screen at once.
- Medium — The default browser size (~16 px). Recommended for most users.
- Large — Larger text (~18 px base), ideal for accessibility or larger monitors.
Click the desired button in the Display Preferences card. The change applies instantly and persists across sign-outs — no page refresh needed.
9.5 Notification Preferences
A list of all notification types with on/off toggles. Changes save immediately — no need to click a "Save" button. See Section 8.3 for recommended settings by role.
Campaigns
The Campaigns module lets you send targeted SMS and email messages to your patients automatically — recalls, insurance reminders, follow-ups, and more. Campaigns run on autopilot once activated.
10.1 What Are Campaigns?
A campaign is an automated sequence of messages sent to a group of patients. Each campaign has:
- Type — what kind of outreach (exam reminder, insurance renewal, etc.)
- Segment — which patients qualify (based on age, last exam, Rx expiry, etc.)
- Drip steps — one or more messages sent at defined intervals (e.g. SMS on day 0, email on day 14)
- Recipients — the patients enrolled in this campaign and their progress
Navigate to Campaigns in the sidebar to see your campaign list.
10.2 Campaign Types
The system includes 21 pre-built campaign types, each with a default drip sequence:
| Type | Purpose |
|---|---|
| Exam Reminder | Annual recall — remind patients it's time for a checkup |
| Insurance Renewal | Alert patients when their vision benefits are about to renew |
| Prescription Expiry | Notify patients whose Rx is expiring soon |
| Walk-in Follow-up | Follow up with walk-in visitors who didn't purchase |
| Second Pair | Offer a second pair to recent frame buyers |
| Post Purchase Referral | Ask satisfied customers to refer friends |
| Dormant Reactivation | Re-engage patients who haven't visited in 18+ months |
| Birthday / Anniversary | Send a special offer on the patient's birthday |
| One-Time Blast | A single broadcast message to a group (sale, event, etc.) |
| VIP Insider | Exclusive early access for high-value patients |
| …and 11 more types including Insurance Maximization, Damage Replacement, New Arrival VIP, and others | |
10.3 Creating a Campaign
- Go to Campaigns → New Campaign
- Select a Campaign Type — the system pre-fills a drip sequence for you
- Give the campaign a Name and optional description
- Optionally configure a Segment — define which patients automatically qualify (e.g. "patients aged 40+ whose last exam was 300–400 days ago")
- Review the pre-built drip steps (you can customise the message body)
- Click Create Campaign — it starts in Draft status
- From the campaign detail page, click Activate when you're ready for it to run
10.4 Campaign Status Lifecycle
| Status | Meaning |
|---|---|
| Draft | Being set up — not running, no messages sent |
| Active | Running — processes daily, enrolls new patients, sends drip messages |
| Paused | Temporarily stopped — no new messages; can be re-activated |
| Archived | Permanently stopped — kept for history |
Use the action buttons on the campaign detail page to move between statuses.
10.5 Recipients & Segments
Manual Enrollment
On any campaign detail page, click Enroll Patient to add a specific patient. Useful for small targeted outreach or testing.
Automatic Segment Enrollment
If the campaign has a segment configured, every daily run evaluates which patients match and auto-enrolls any who haven't been enrolled before. Patients who opt out are excluded.
Segment Conditions
You can filter by: age, lifetime order count, days since last exam, days since last order, Rx expiry window, insurance renewal month, gender, city, onboarding status, and more. Combine conditions with AND or OR logic.
Recipient Statuses
| Status | Meaning |
|---|---|
| Active | Enrolled and receiving drip messages |
| Completed | Finished all drip steps |
| Converted | Placed a qualifying order after enrollment — no more messages sent |
| Opted Out | Patient requested opt-out — removed from all campaigns |
| Paused | Temporarily paused for this recipient |
10.6 Analytics
The Campaigns → Analytics page shows a cross-campaign view: total messages sent, delivery rate, conversion rate, and revenue attributed to campaigns.
Individual campaign detail pages show per-campaign metrics: recipients enrolled, messages sent vs failed, conversions, and a full message log.
10.7 Automatic Scheduler
The system runs a daily job at 9am UTC that processes all Active campaigns automatically. For each campaign it:
- Finds patients who match the segment and enrolls them
- Sends the appropriate drip step message to each enrolled patient (if the delay has elapsed)
- Checks whether any patient placed an order (and marks them Converted)
- Records a run log with full stats
- Fires a notification to staff when complete
You can also trigger a run manually from the campaign detail page (Admin only).
10.8 Post-Purchase Enrollment at Pickup
When staff click "Confirm Pickup" in the Pickup Complete modal, the system automatically enrolls patients into campaigns based on the toggles selected — no manual campaign management needed.
How It Works
- Referral toggle checked — the system finds your active Post Purchase Referral campaign and immediately creates a recipient record for the purchasing patient (step 0, status Active). The first referral message goes out 3 days later per the campaign schedule.
- Family promo toggle checked — the system finds your active Family Add-on campaign and enrolls each linked family member (the purchaser themselves is excluded). Useful for nudging a spouse or child to come in.
Prerequisites
- The relevant campaign must exist and have status Active. If no active campaign of that type exists, the toggle is silently ignored — the pickup still completes normally.
- For family promo, the patient must have family members linked on their profile (see Customer → Family Linking).
- Patients with Marketing Opt-Out enabled are never enrolled, even if the toggle is checked.
Phase 1 & 2 Features
17 new features shipped in V2.2.0 spanning eye exam ordering, customer profile enhancements, referrals, invoicing, appointments, email delivery, and inventory expansion.
11.1 Eye Exam Order Sub-flow
When creating a new order and selecting Eye Exam as the order type, the wizard inserts an Exam Details step:
11.2 Customer Insurance Manager
The insurance section on customer profiles has been upgraded from a read-only display to a full Insurance Policy Manager:
- Each policy shows: Provider, Contract Number, Member ID, Last Claim Date, Estimated Next Claim Date (auto-calculated from last claim + eligibility interval), and Estimated Insured Amount
- Click "Add Policy" to expand an inline form and save a new policy
- Edit or deactivate any policy using the icons on each card
- Deactivated policies are hidden from the active list but retained in the database
11.3 Family Members Auto-linking
The Family Members card on a customer profile helps you group households together:
- Click "Find Family Matches" — the system searches for other customers with the same phone number or address and surfaces suggestions
- Use "Create Family Group" to start a new family and link the current customer
- Use "Add to Existing Family" to join a family group that's already set up
- Once linked, all family members appear as avatar links — click any to open their profile
11.4 Referral Code Tracking
Each customer can have a unique referral code that you share with them to track new business they bring in.
Generating a Code
- Open the customer profile
- Find the Referral Code card
- Click "Generate Code" — a code like
MV-JADO-4821is created - Use the copy button to copy it to your clipboard
- Share the code with the patient verbally or send it to them
Using a Code on an Order
- In the Order Wizard, go to the Payment step
- Type the referral code into the Referral Code field (e.g.
MV-JADO-4821) - Click "Apply" — the system validates the code and shows a green confirmation: "Referred by [Name] — $25 applied"
- A $25 credit is automatically deducted from the order total
- When the order is saved, $25 store credit is created in the referrer's profile automatically
- To remove the code before saving, click the ✕ on the green confirmation banner
The Referral History table on each customer's card shows: referred customers, dates, statuses, and total rewards earned.
11.5 Saved Frames
Staff can bookmark frames a patient liked during a visit for easy follow-up.
Saving a Frame
- Open the customer profile → Saved Frames card
- Click "Save Frame"
- Either search for an existing inventory item, or enter brand/model/color manually
- Optionally take a photo with the iPad camera or upload an image
- Set an Expected Return Date if the patient said they'd come back to try them again
- Click Save
Managing Saved Frames
- Tap the heart icon to mark a frame as a favorite
- Inline return date edit — click the return date label (or “Set return date” if none set) to open an inline date picker; click Save to persist or ✕ to cancel
- Remove a frame with the delete button (confirmation required)
- The Dashboard Follow Ups section surfaces customers with overdue or upcoming expected return dates
11.5.1 Frame Image Auto-Lookup
Finding a photo of a frame no longer requires manual searching. Two helpers are built into the Add Frame form:
Find Image Online Link
While adding a frame, once you've filled in both Brand and Model, a "Find image online" link appears below the camera button:
- Open the customer profile → Saved Frames → Save a Frame
- Type the brand (e.g. Ray-Ban) and model (e.g. RB5154)
- The "Find image online" link appears
- Click it — Google Images opens in a new tab with search results for "Ray-Ban RB5154 eyeglasses"
- Find the right photo, copy its URL, and paste it into the frame form (or download and upload via the camera button)
Photo Auto-Populate from Inventory
If you pick a frame from your inventory autocomplete (the search field at the top of the Add Frame form) and that same customer already has a Saved Frame for that inventory item with a photo saved, the photo is automatically pre-filled. You don't have to find or upload it again.
11.6 Styling Appointment Quick-Booking
Book a frame styling appointment directly from the customer profile without leaving the page.
- Open the customer profile → Appointments card
- Click "Book Appointment"
- Select a date, time, duration (default 30 min), and optional notes
- The appointment type defaults to Styling
- Click Book — the appointment appears in the upcoming list immediately
Upcoming styling appointments also appear in the Dashboard → Follow Ups section so no booking gets missed.
11.7 Email Invoice
Send a PDF invoice as an email attachment to the patient from the invoice page. The email contains a short thank-you message and the invoice PDF is attached.
- Open an order → click Invoice
- Click the "Email Invoice" button (mail icon) in the action bar
- The button shows a loading spinner while sending, then "Sent!" on success or "Failed" on error
- The email is sent to the patient's email address on file via Resend
You can also check "Email invoice to patient" in the Order Wizard review step — the email will be sent automatically when the order is submitted.
11.8 Add Another Order
There are two ways to add a second order for the same patient — one before saving, one after.
Option A — Queue Before Saving (Step 7 Checkbox)
Check "Add another order for {Patient First Name} after saving" in the Invoice Actions card on the Review step before clicking Create Order. The wizard resets immediately after saving with the same patient selected — no overlay, no detour. See Section 4.8 for the full walkthrough.
Option B — Success Overlay After Saving
If the checkbox was not checked, a success overlay appears after the order is saved with three options:
- View Order — navigate to the new order's detail page
- Add Another Order for [Patient Name] — resets the form and keeps the same customer selected (skips customer search step)
- Back to Orders — return to the fulfillment board
Both options are ideal for same-visit appointments where a patient orders glasses and contacts at the same time.
11.9 Purchase Order — Expanded Line Items
The PO creation form now supports two modes per line item:
Select Existing Frame
Search your existing inventory and pick a frame. The frame's details auto-fill. Enter quantity and unit cost.
Add New Frame
Enter all frame details manually. New fields available:
| Field | Notes |
|---|---|
| Brand / Model # | Free text |
| Gender | Unisex / Men / Women / Kids |
| Eye Size / Bridge / Temple | Frame measurements in mm |
| Colour / Colour Code | Colour from dropdown; code is vendor's exact code |
| Retail Price | Sets the suggested selling price |
| Gross Profit | Auto-calculated: Retail Price − Unit Cost |
| Frame Type | Optical / Sunglasses / Reading / Safety / Sport |
| Material | Acetate / Metal / Titanium / TR-90 / Stainless Steel / Mixed / Other |
When the PO is saved, "Add New Frame" items automatically create a new InventoryItem record with an auto-generated SKU.
RAY-RB5154-2000-49-21 — so you can verify it before saving.
11.10 SKU Auto-Generation
When a new inventory item is created (via the PO form or directly), the system can auto-generate a SKU:
Format: {BRAND3}-{MODEL}-{COLORCODE}-{EYESIZE}-{BRIDGE}
Example: RAY-RB5154-2000-49-21 (Ray-Ban RB5154, colour code 2000, 49mm eye, 21mm bridge)
- Brand prefix: first 3 characters, uppercase, special characters stripped (e.g. "Saint-Laurent" →
SAI) - Optional parts are omitted if blank — e.g. just brand + model gives
RAY-RB5154 - If a collision exists, the system automatically appends
-2,-3, etc.
11.11 Received Frames Tab & Display Tracking
Find this page at Inventory → Received Frames in the sidebar.
This view shows all frames that have been received from purchase orders, so you can track when they were put on display for customers.
Columns
| Column | Description |
|---|---|
| Brand / Model | Frame identity |
| Colour / SKU | Item code |
| Received Date | When the PO receiving was recorded |
| PO Number | Links to the source purchase order |
| Display Status | "Not Displayed" or "Displayed since [date]" |
| Action | Mark Displayed / Remove from Display button |
Marking a Frame as Displayed
- Find the frame in the Not Yet Displayed filter (default)
- Click "Mark Displayed"
- Optionally enter a display location (e.g. "Wall A - Shelf 3")
- Click Confirm — the row moves to the Displayed filter and the date is recorded
Appointments
The Appointments page gives you a full weekly calendar to view, book, and manage all patient appointments — eye exams, fittings, pickups, adjustments, and styling sessions — in one place.
12.1 Weekly Calendar
Navigate to Sidebar → Appointments (calendar icon) to open the calendar. The view always opens on the current week.
- 7 day columns (Mon–Sun) with the date number and an appointment count badge per day
- Time gutter on the left shows hours from 9 AM to 7 PM in 30-minute slots
- Today's column is lightly highlighted; a red horizontal line tracks the current time
- Appointment cards are color-coded by type and sized proportionally to their duration
- If two appointments overlap in the same time slot, they tile side by side within the column
Week Navigation
- Use the ← / → arrow buttons in the toolbar to move to the previous or next week
- The URL updates to
/appointments?week=YYYY-MM-DD— you can bookmark or share any week view - Click Today (appears when you're not on the current week) to jump back instantly
12.2 Booking an Appointment
There are two ways to open the booking modal:
- Click "+ Book Styling" in the toolbar — opens the modal with Eyewear Styling pre-selected
- Click any empty time slot on the calendar — opens the modal with that day and time pre-filled
/customers/new in a new tab — create the patient there, then come back and search again.
12.3 Managing Appointments
Click any appointment card to open the Actions Popover. It shows the patient name (linked to their profile), appointment type, time range, and current status badge.
Status Transitions
The available action buttons change based on the current status:
| Current Status | Available Actions |
|---|---|
| SCHEDULED | Confirm, Check In, Cancel, No Show |
| CONFIRMED | Check In, Cancel, No Show |
| CHECKED IN | Complete |
| COMPLETED | Reschedule |
| CANCELLED | Reschedule |
| NO SHOW | Reschedule |
Rescheduling
For CANCELLED, NO SHOW, or COMPLETED appointments, the popover shows a Reschedule section with an inline datetime picker. Pick the new date/time and click Reschedule. The appointment status resets to SCHEDULED and the card reappears on the calendar at the new time.
12.4 Appointment Types & Colors
| Type | Color | Typical Use |
|---|---|---|
| Eye Exam | Blue | Full optometric examination |
| Contact Lens Fitting | Purple | Contact lens trial and fitting |
| Follow-Up | Orange | Post-exam or post-order check-in |
| Glasses Pickup | Green | Order ready — patient coming to collect |
| Adjustment | Yellow | Frame fit adjustment after pickup |
| Eyewear Styling | Emerald | Frame selection consultation |
Staff Tasks
The Task Queue gives your team a shared to-do list for follow-up calls, lab work, admin tasks, and marketing actions. Tasks can be assigned to specific staff or roles, linked to patients, and tracked with comments.
13.1 Task List & Filters
Navigate to Sidebar → Tasks (clipboard icon). The sidebar also shows a red badge with your open task count.
- My Tasks (default ON) — shows only tasks assigned to you or your role
- Status chips — All, Open, In Progress, Done
- Category chips — Clinical, Admin, Lab, Marketing
- Urgent toggle — filter to show only urgent tasks
- Search box — search by title or description text
- Overdue tasks appear with a red background and red due date
- Tasks sort by: Urgent first, then by due date, then newest first
13.2 Creating a Task
Click "+ New Task" in the top-right of the Tasks page. The modal includes:
- Title (required) — a short description of what needs to be done
- Category — Clinical, Admin, Lab, or Marketing
- Priority — Normal or Urgent (toggle buttons)
- Assign to — pick a specific staff member, or "Any Staff" / "Any Admin" for role-based assignment
- Link to patient — type to search by name or phone; the task will appear on that patient's profile
- Due date — optional deadline (tasks past this date show as overdue)
- Description — optional notes with more detail
13.3 Task Details & Comments
Click any task row to open the detail panel (slide-over from the right):
- Status buttons — move the task through Open → In Progress → Done, or Cancel it
- Edit any field — title, category, priority, assignee, due date, and description are all editable inline
- Comments — add notes for handoff or progress updates; each comment shows author and date
- Delete — soft-deletes the task (it won't appear in lists anymore)
13.4 Patient-Linked Tasks
When a task is linked to a patient, it also appears on the customer detail page in a Tasks card (right column, between Appointments and Referrals).
- The card shows all open/in-progress tasks for that patient
- Click "+ Add Task" to create a task pre-linked to that patient — no need to search
- Click any task to jump to the full task detail panel on the Tasks page
- "Call Mrs. Johnson about her new bifocal options" (Clinical)
- "Follow up on lab delay for order ORD-2026-042" (Lab)
- "Send birthday promo to VIP customers" (Marketing)
- "Restock lens cleaning kits before Saturday" (Admin)
Exams — Weekly Tracking
The Exams page provides a weekly view of all eye exams with payment method tracking.
14.1 Week Navigation
Use the arrow buttons to move between weeks. Click "Today" to jump back to the current week. The current week is highlighted.
14.2 Summary Cards
- Total Exams — count of exams for the displayed week.
- Total Billed / Total Paid — dollar totals for the week.
- Payment Breakdown — count of exams by payment method (Cash, Insurance, OHIP, etc.).
14.3 Exam Table
Each exam shows patient name (linked to their profile), date, exam type, doctor, payment method, amount billed, and amount paid.
14.4 Logging a New Exam
- Click Log Exam (top-right button).
- Search for the patient by name or phone.
- Select the exam date, type, and doctor.
- Choose the payment method (Cash, Debit, Insurance, etc.) and check "OHIP Covered" if applicable.
- Enter the amount billed and amount paid.
- Add optional clinical notes.
- Click Log Exam to save.
Google Reviews — Tracking
Track which customers have given a Google review so staff knows who to ask and who not to.
15.1 Customer Detail — Google Review Card
On the customer detail page (left column), there is a Google Review card:
- If the customer has given a review, a green "Given" badge appears with the date and any note.
- If the customer has not given a review, a "Mark as given" link appears. Click it to expand a form where you can add an optional note (e.g., "5 stars, mentioned Dr. Smith").
- You can remove the review status at any time by clicking the red "Remove review status" link.
15.2 Customer List — Star Indicator & Filter
- A yellow star icon appears next to a customer's name in the list if they have given a Google review.
- Use the Reviewed / Not Reviewed filter pills (next to the lifecycle tabs) to filter the customer list by review status.
Security & Compliance
The portal is designed to meet PHIPA and PIPEDA requirements for handling protected health information. This section explains the automatic security controls all staff will encounter, and documents the Admin-only compliance tools.
16.1 Session Idle Timeout
For patient privacy, the portal automatically signs you out after 30 minutes of inactivity (no page navigations during that time).
- When this happens, you land on the login page with a yellow banner: "You were signed out due to inactivity."
- Simply log back in — all previously saved work is preserved in the database.
- Any time you navigate to a new page, the 30-minute timer resets.
16.2 Password Policy & Account Lockout
To protect patient records, all passwords must meet these requirements:
- Minimum 12 characters
- At least one uppercase letter (A–Z)
- At least one lowercase letter (a–z)
- At least one number (0–9)
- At least one special character (e.g.,
!,@,#,$)
The Change Password form shows a real-time checklist with a green checkmark next to each rule as you type — you cannot save until all five rules are satisfied.
Account Lockout
After 5 consecutive failed login attempts, the account is automatically locked for 15 minutes. During this time the login form shows:
"Account locked until [time]. Too many failed attempts."
- The lock clears automatically after 15 minutes — no admin action needed in most cases.
- If you need immediate access, your store manager can clear the lockout in the database.
16.3 Audit Log (Admin Only)
Every create, update, delete, login, and logout event in the portal is automatically recorded in a tamper-evident audit log. This log is required by PHIPA for any healthcare application that stores protected health information.
To access: Sidebar → Admin → Audit Log
(The Admin section is only visible to accounts with the Admin role.)
What Is Logged
| Event | When It Fires |
|---|---|
| LOGIN | Successful staff sign-in |
| LOGOUT | Staff clicked Log Out |
| LOGIN_FAILED | Wrong password entered |
| ACCOUNT_LOCKED | 5th failed attempt triggered lockout |
| PASSWORD_CHANGE | Staff updated their password |
| CREATE | New customer, order, prescription, vendor, appointment, etc. added |
| UPDATE | Customer record edited, order notes changed, etc. |
| DELETE | Customer soft-deleted, inventory item removed |
| STATUS_CHANGE | Order status advanced (e.g., LAB_RECEIVED → VERIFIED) |
| FORM_SUBMITTED | Patient completed an intake form online |
| INTAKE_APPLIED | Staff applied intake data to patient record |
| PO_RECEIVED | Purchase order marked as received |
Filtering & Reading the Log
Use the filter bar at the top to narrow results by Record Type, Action, Staff Member, or Date Range. Results are ordered newest-first, 50 per page.
Click the ▼ Changes arrow on any row to expand the before/after JSON diff for that event — useful for auditing specific edits to patient records.
16.4 Breach Reports (Admin Only)
If a privacy breach occurs — such as unauthorized disclosure of patient health information — PHIPA requires notifying the IPC (Information and Privacy Commissioner of Ontario) within 30 days and affected individuals as soon as feasible.
To access: Sidebar → Admin → Breach Reports
Filing a New Breach Report
Breach Status Workflow
Advance the status from the breach detail page as each step is completed. Each transition records a timestamp.
IPC Notification Letter
From any breach detail page, the system automatically generates a pre-filled IPC notification letter. Click "View IPC Notification Letter" to see the text — copy it into an email or letter addressed to the IPC.
16.5 Staff Roles Overview
Each staff account is assigned one of three roles:
| Role | Can Do | Cannot Do |
|---|---|---|
| Admin | All operations, including Audit Log, Breach Reports, and user management | — |
| Staff | All day-to-day operations: create orders, customers, forms, purchase orders, appointments | Admin-only pages |
| Viewer | View all records in read-only mode | Create, edit, or delete anything |
If you are assigned the Viewer role, all "New", "Edit", and "Delete" buttons are hidden from the UI. Attempting a write operation via a direct URL redirects to the dashboard with a permissions error.
Quick Reference
Tear out this section and keep it at your workstation. Everything you need at a glance.
10.1 Order Status Cheat Sheet
| Status | Badge | Staff Action Required |
|---|---|---|
| DRAFT | DRAFT | Review and confirm with patient. Collect deposit. |
| CONFIRMED | CONFIRMED | Print work order. Send to lab. |
| LAB ORDERED | LAB ORDERED | Monitor expected delivery. Follow up if overdue. |
| LAB RECEIVED | LAB RECEIVED | Optician verifies Rx against prescription. |
| VERIFIED | VERIFIED | Call/text patient. Mark Ready. |
| READY | READY | Patient notified. Collect balance. Dispense. |
| PICKED UP | PICKED UP | Complete — no action needed. |
| CANCELLED | CANCELLED | Process refund if deposit was collected. |
10.2 Customer Lifecycle Quick Reference
| Badge | Definition | Recommended Action |
|---|---|---|
| VIP | 3+ orders or LTV > $2,000 | Priority service. Early access to new collections. |
| Active | Purchase in last 18 months | Recall timing. Second-pair push. |
| New | <6 months old, ≤1 order | Onboarding. Build relationship. |
| Lapsed | 18 months – 3 years since purchase | Proactive outreach. Offer incentive to return. |
| Dormant | 3+ years or never purchased | Win-back campaign or data review. |
| Lead | New record, no orders yet | Follow up. Convert to first visit. |
10.3 Common Tasks — Step by Step
👤 Create a New Customer
- Sidebar → Customers
- Click "New Customer" (top right)
- Fill in name, phone, email, DOB
- Click "Save"
📦 Create a New Order
- Sidebar → Fulfillment Board
- Click "New Order" (top right)
- Complete all 7 wizard steps
- Click "Place Order"
📋 Send a Patient Form
- Sidebar → Forms
- Select the template type
- Search for the patient
- Click "Generate Link"
- Copy link → send via text/email
📦 Send Intake Package (New Patient)
- Sidebar → Forms → Intake Packages tab
- Click "New Intake Package"
- Select or create the patient
- Copy the package link → send to patient
👓 Add a Frame to Inventory
- Sidebar → All Frames
- Click "New Item"
- Fill in brand, model, SKU, pricing
- Enter initial stock qty
- Click "Save Item"
🛒 Create a Purchase Order
- Sidebar → Purchase Orders
- Click "New PO"
- Select vendor + expected date
- Add line items (frame + qty + cost)
- Click "Send to Vendor"
✅ Mark Order Picked Up
- Open the order detail page
- Verify status is READY
- Click "Mark Picked Up"
- Complete the pickup modal
- Collect remaining balance
🧾 Issue an Invoice
- Open the order detail page
- Click "Invoice" button (top right)
- Review the invoice
- Click "Issue Invoice"
- Print or share with patient
🔬 Receive a Purchase Order
- Sidebar → Purchase Orders
- Open the relevant PO
- Click "Receive Items"
- Enter qty received per line
- Click "Confirm Receipt"
🔔 Change Notification Settings
- Sidebar → Settings
- Scroll to Notification Preferences
- Toggle each type on or off
- Changes save automatically
10.4 Keyboard & Navigation Tips
| Tip | Description |
|---|---|
| Cmd+P (Mac) / Ctrl+P (Windows) | Print current page. Use for Work Orders and Invoices. |
| Browser Back Button | Navigate back to the previous page. Safe to use — no data loss on read-only pages. |
| Click Order # in any list | Opens that order's detail page in the same tab. |
| Click Customer Name in any list | Opens that customer's detail page. |
| Refresh page (Cmd/Ctrl+R) | Forces the notification bell to refresh immediately (instead of waiting 30 seconds). |
| Right-click → Open in New Tab | Open an order or customer in a new tab while keeping your current view. |
| Search bars | Most search bars are instant — no need to press Enter. Just type and results appear. |
10.5 Who to Call for Help
| Issue | Contact |
|---|---|
| Forgot password | Your store manager (they can reset it) |
| Can't log in | Your store manager first, then technical support |
| Patient can't access their form link | Generate a new link from Forms → the old one may have expired |
| Inventory count is wrong | Review the inventory ledger for that item to see what movements occurred |
| Order stuck in wrong status | Contact your manager — status changes are logged and may require correction |
| Technical bug or error | Take a screenshot and contact technical support |